package Libs.Componentes.Visuais
{
	import flash.events.Event;
	import flash.events.FocusEvent;
	
	import mx.controls.TextInput;
	
	[Event(name="valueChange", type="flash.events.Event")] 
	 
	public class AgenciaTextInput extends TextInput
	{
		private var _value:String
		public static const VALUE_CHANGE:String = "valueChange";
		
		public function AgenciaTextInput() 
		{
			super();
			
			this.addEventListener(Event.CHANGE, this.formatHandler, false, 0, true);
			this.addEventListener(FocusEvent.FOCUS_IN, this.setCursor, false, 0, true);
			this.resourceManager.addEventListener(Event.CHANGE, this.formatHandler, false, 0, true);
		}
		
		private function formatHandler(event:Event):void 
		{
			if(this.text.length > 1)
			{
				this.text = FormatarNumero(this.text);
			}
			this.setCursor(null);
		}
		
	    private function setCursor(event:FocusEvent):void 
	    {
	        this.setSelection(this.length, this.length);
	    }
	    
	    private function FormatarNumero(numero:String):String
	    {
	    	var retorno:String;
			
	    	retorno = NumeroComHifem(numero);
	    	
	    	if(( numero.length == 2)&&(numero.search("-") != -1))
	    	{
	    		retorno = NumeroSemHifem(numero);
	    	}
	    	
	    	return retorno;
	    }
	    
	    private function NumeroComHifem(numero:String):String
	    {
	    	var retorno:String = "";
	    	if(numero.indexOf("-") != -1)
	    	{
	    		numero = NumeroSemHifem(numero);
	    		retorno = numero.substring(0, numero.length -1) + "-" + numero.substring(numero.length-1,numero.length);
	    	}
	    	else
	    	{
	    		if(numero.length > 1)
	    		{
	    			retorno = numero.substring(0, numero.length -1) + "-" + numero.substring(numero.length-1,numero.length);
	    		}
	    		else
	    		{
	    			retorno = numero;
	    		}
	    	}
	    	return retorno;
	    }
	    
	    private function NumeroSemHifem(numero:String):String
	    {
	    	var retorno:String;
	    	if( numero.indexOf("-") != -1 )
	    	{
	    		retorno = numero.replace("-","");
	    	}
	    	else
	    	{
	    		retorno = numero;
	    	}
	    	return retorno;
	    }
	    
	    public function get ValorSemHifen():String
	    {
	    	return NumeroSemHifem(this.text);
	    }
	    
	    public function ValorComHifen(numero:String):String
	    {
	    	var numeroComHifem:String;
	    	if(numero != null)
	    	{
	    		if(numero.length > 1)
	    		{
	    			numeroComHifem = NumeroComHifem(numero);
	    		}
	    		else
	    		{
	    			numeroComHifem = numero;
	    		}
	    	}
	    	return numeroComHifem;
	    }
	    
	    public function get value():String
	    {
			return this._value;
		}
	    
	   [Bindable(event="valueChange")]
	    public function set value(value:String):void 
	    {
	    	if(value != null)
	    	{
	    		this._value = value;
				this.text = NumeroComHifem(value);   
				this.dispatchEvent(new Event(NumericInput.VALUE_CHANGE));
	    	}
		}
	    
	}
}